// 定义项目打包时排除的文件或目录
fis.set('project.ignore', [
    'output/**',
    'deploy/**',
    'dist/**',
    'assets/**',
    'map.json',
    'package.json',
    'fis-conf.js',
    '.git/**',
    'modules/**',
    '.svn/**',
    'node_modules/**'
]);



// 开启模块化开发
fis.hook('commonjs'); // 采用 commonjs 模块化方案。


// 启用 es6-babel 插件，解析 .es6 后缀为 .js
fis.match('/{node_modules,modules}/**.{es6,es}', {
    rExt: '.js',
    //parser: fis.plugin('babel')
    parser: fis.plugin('babel-5.x', {
        sourceMap: false // 产出源码表，方便调试。
    })
});


// 设置成是模块化 js, 编译后会被 define 包裹。
fis.match('/{node_modules,modules}/**.{es6,js}', {
    isMod: true,
    useSameNameRequire: true
});


// 模块化加载器配置
// 因为是纯前段项目，依赖不能自断被加载进来，所以这里需要借助一个 loader 来完成，
// 注意：与后端结合的项目不需要此插件!!!
// https://github.com/fex-team/fis3-postpackager-loader
// npm install -g fis3-postpackager-loader
fis.match('::package', {
    // npm install [-g] fis3-postpackager-loader
    // 分析 __RESOURCE_MAP__ 结构，来解决资源加载问题
    postpackager: fis.plugin('loader', {
        //resourceType: 'commonJs',
        //sourceMap:true, //是否生成依赖map文件
        useInlineMap: false //是否将sourcemap作为内嵌脚本输出
    })
});



// 禁用components
fis.unhook('components');
// fis3 对npm的node_modules模块的支持
// https://github.com/fex-team/fis3-hook-node_modules/
// npm install -g fis3-hook-node_modules
fis.hook('node_modules', {
    mergeLevel: 3,
    shimBuffer: false
});


// 发布用于生产环境下的库

fis.media('prod')
    .match('/{lib,node_modules}/**.{css,scss}', {
        packTo: '/pkg/common.css',
        optimizer: fis.plugin('clean-css', {
            'keepBreaks': true //保持一个规则一个换行
        })
    })
    .match('/{lib,node_modules}/**.{es6,js}', {
        packTo: '/pkg/common.js',
        optimizer: fis.plugin('uglify-js') // 压缩和混淆JS
    })
    .match('/modules/**.{scss,css}', {
        // 优化清理css
        packTo: '/pkg/aio.css',
        optimizer: fis.plugin('clean-css', {
            'keepBreaks': true //保持一个规则一个换行
        })
    })
    .match('/modules/**.{es6,js}', {
        packTo: '/pkg/aio.js',
        optimizer: fis.plugin('uglify-js') // 压缩和混淆JS
    });
